Passed
Push — master ( 5f67fe...8bce0b )
by Jesús
02:16
created

displayService.ts ➔ getWordDisplayData   A

Complexity

Conditions 2

Size

Total Lines 14
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 13
dl 0
loc 14
rs 9.75
c 0
b 0
f 0
1
import { calculateBinaryValue, getBinaryString } from '../../bip39';
2
import { getWord } from '../../bip39';
3
import { calculateDisplayState, generateWordAnnouncement } from '../domain/displayHelpers';
4
import { shouldBoxBeDisabled } from '../../bip39';
5
6
export interface BoxDisplayData {
7
  isActive: boolean;
8
  isDisabled: boolean;
9
  ariaPressed: string;
10
}
11
12
export interface WordDisplayData {
13
  indexText: string;
14
  announcement: string;
15
}
16
17
export interface BinaryDisplayData {
18
  binaryString: string;
19
}
20
21
export function getBoxDisplayData(index: number, boxes: boolean[]): BoxDisplayData {
22
  const isActive = boxes[index];
23
  const isDisabled = shouldBoxBeDisabled(index, boxes);
24
  
25
  return {
26
    isActive,
27
    isDisabled,
28
    ariaPressed: isActive.toString(),
29
  };
30
}
31
32
export function getAllBoxesDisplayData(boxes: boolean[]): BoxDisplayData[] {
33
  return boxes.map((_, index) => getBoxDisplayData(index, boxes));
34
}
35
36
export function getWordDisplayData(binaryValue: number): WordDisplayData {
37
  const displayState = calculateDisplayState(binaryValue);
38
  
39
  let announcement = displayState.announcement;
40
  
41
  if (displayState.shouldGetWord) {
42
    const word = getWord(binaryValue - 1);
43
    announcement = generateWordAnnouncement(word, binaryValue);
44
  }
45
  
46
  return {
47
    indexText: displayState.indexText,
48
    announcement,
49
  };
50
}
51
52
export function getBinaryDisplayData(): BinaryDisplayData {
53
  return {
54
    binaryString: getBinaryString(),
55
  };
56
}
57
58
export function getAllDisplayData(boxes: boolean[]): {
59
  boxes: BoxDisplayData[];
60
  word: WordDisplayData;
61
  binary: BinaryDisplayData;
62
} {
63
  const binaryValue = calculateBinaryValue();
64
  
65
  return {
66
    boxes: getAllBoxesDisplayData(boxes),
67
    word: getWordDisplayData(binaryValue),
68
    binary: getBinaryDisplayData(),
69
  };
70
}
71